<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <h1>class类-继承</h1>
    <script>
        // class类名一般要求首字母大写
        class Animal {
            // 系统方法: 通过new关键词创建实例对象的时候, 自动执行, 
            // 创建实例对象时传递实参可以通过constructor来接收
            constructor(a, b, c) {
                // this指向new创建出来的实例对象
                // 动态创建属性
                this.name = a
                this.age = b
                this.sex = c
            }
            // 实例方法: 自定义方法
            greet() {
                console.log(`我叫${this.name}, 我今年${this.age}岁`);
            }
        }

        class Dog extends Animal {
            // 在继承关系中, 子类中如果声明了constructor构造器方法, 
            // 必须在constructor构造器方法内部通过super调用父类的构造器方法
            constructor(name, age, sex, color) {
                // 调用父类的构造器方法
                super(name, age, sex)
                this.color = color
            }
           // 实例方法: 自定义方法
            eat() {
                console.log(`${this.name}喜欢吃骨头`);
            }
        }

        // 创建子类dog的实例对象
        var d1 = new Dog('大黄', 3, 'boy', '黄色')
        console.log(d1.name, d1.age, d1.sex);
        d1.greet()
        d1.eat()

    </script>
</body>

</html>